package br.com.upis.sispat.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import br.com.upis.sispat.enums.StatusRequisicao;
import br.com.upis.sispat.enums.TipoPatrimonio;

@Entity
@Table(name = "tb_requisicao", schema = "db_sispat")
public class Requisicao implements Serializable {

	private static final long serialVersionUID = -7026825738144869861L;

	public Requisicao() {
	}

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_requisicao", nullable = false, unique = true)
	private Long codigo;

	@Column(name = "justificativa")
	private String justificativa;
	
	@Column(name = "data_requisicao")
	private Date dataReqisicao;
	
	@ManyToOne(cascade = CascadeType.REFRESH)
	@JoinColumn(name = "id_usuario", referencedColumnName = "id_usuario")
	private Usuario usuario;
	
	@ManyToOne(cascade = CascadeType.REFRESH)
	@JoinColumn(name = "id_patrimonio", referencedColumnName = "id_patrimonio")
	private Patrimonio patrimonio;
	
	@Column(name = "tipo_patrimonio")
	private String tipoPatrimonio;
	
	@Column(name = "status_requisicao")
	private Integer statusRequisicao; 
	
	@Transient
	private Integer idSetorPerfilNaoGestor;
	
	@Transient
	private Integer idUsuarioPerfilNaoGestor;
	
	public String getDescTipoPatrimonio(){
		return TipoPatrimonio.getTipoPatrimonioBySigla(getTipoPatrimonio()).getDescricao();
	}
	
	public String getDescStatusRequisicao(){
		return StatusRequisicao.getRequisicaoByCodigo(statusRequisicao).getDescricao();
	}
	
	public Long getCodigo() {
		return codigo;
	}

	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String getJustificativa() {
		return justificativa;
	}

	public void setJustificativa(String justificativa) {
		this.justificativa = justificativa;
	}

	public Date getDataReqisicao() {
		return dataReqisicao;
	}

	public void setDataReqisicao(Date dataReqisicao) {
		this.dataReqisicao = dataReqisicao;
	}

	public String getTipoPatrimonio() {
		if(tipoPatrimonio==null){
			return "";
		}
		return tipoPatrimonio;
	}

	public void setTipoPatrimonio(String tipoPatrimonio) {
		this.tipoPatrimonio = tipoPatrimonio;
	}

	public Integer getStatusRequisicao() {
		return statusRequisicao;
	}

	public void setStatusRequisicao(Integer status_requisicao) {
		this.statusRequisicao = status_requisicao;
	}

	public Patrimonio getPatrimonio() {
		return patrimonio;
	}

	public void setPatrimonio(Patrimonio patrimonio) {
		this.patrimonio = patrimonio;
	}

	public Integer getIdSetorPerfilNaoGestor() {
		return idSetorPerfilNaoGestor;
	}

	public void setIdSetorPerfilNaoGestor(Integer idSetorPerfilNaoGestor) {
		this.idSetorPerfilNaoGestor = idSetorPerfilNaoGestor;
	}

	public Integer getIdUsuarioPerfilNaoGestor() {
		return idUsuarioPerfilNaoGestor;
	}

	public void setIdUsuarioPerfilNaoGestor(Integer idUsuarioPerfilNaoGestor) {
		this.idUsuarioPerfilNaoGestor = idUsuarioPerfilNaoGestor;
	}

}